package com.yidian.mapper;

import com.yidian.entity.Article;
import com.yidian.entity.ArticleExample;
import com.yidian.entity.ArticleWithBLOBs;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface ArticleMapper {
    int countByExample(ArticleExample example);

    int deleteByExample(ArticleExample example);

    int deleteByPrimaryKey(Long articleId);

    int insert(ArticleWithBLOBs record);

    int insertSelective(ArticleWithBLOBs record);

    List<ArticleWithBLOBs> selectByExampleWithBLOBs(ArticleExample example);

    List<Article> selectByExample(ArticleExample example);

    ArticleWithBLOBs selectByPrimaryKey(Long articleId);

    int updateByExampleSelective(@Param("record") ArticleWithBLOBs record, @Param("example") ArticleExample example);

    int updateByExampleWithBLOBs(@Param("record") ArticleWithBLOBs record, @Param("example") ArticleExample example);

    int updateByExample(@Param("record") Article record, @Param("example") ArticleExample example);

    int updateByPrimaryKeySelective(ArticleWithBLOBs record);

    int updateByPrimaryKeyWithBLOBs(ArticleWithBLOBs record);

    int updateByPrimaryKey(Article record);

    // 根据文章id获取文章详情（获取文章详情）
    Article selectArticleById(Long articleId);

    //根据文章id让收藏字段加一（收藏文章）
    int updateArticleCollectAddCountByArticleId(Long articleId);

    // 根据文章id让收藏字段减一（取消收藏文章）
    int updateArticleCollectSubtractCountByArticleId(Long articleId);

    // 根据文章id让点赞字段加一（点赞文章）
    int updateArticleLikeAddCountByArticleId(Long articleId);

    // 根据文章id让点赞字段减一（取消点赞文章）
    int updateArticleLikeSubtractCountByArticleId(Long articleId);

    /**
     * 文章搜索
     * @param keyword
     * @return
     */
    List<Article> search(String keyword);

    /**
     * 获取所有文章
     */
    List<Article> selectArticle();
}